package com.springboot.mybatis.service.rabbitmq;

/**
 * @author sunyt31481
 * @date 2020/8/13 13:36
 * @description
 */

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@SpringBootTest(classes = RabbitMqApplication.class)
@RunWith(SpringRunner.class)
public class ProduceSpringRabbitMqTest {
    /**使用springboot连接之后，会自动生成一个template对象*/
    @Autowired
    private RabbitTemplate rabbitTemplate;//注入rabbitTemplate

    /**
     * 直连（点对点消息模型）
     */
    @Test
    public void test1(){
        rabbitTemplate.convertAndSend("hello", "hello world");
    }

    /**
     * work 任务队列消息模型
     */
    @Test
    public void test2(){
        rabbitTemplate.convertAndSend("work", "work massage");
    }

    /**
     * fanout 发布-订阅 / 广播消息模型  使用交换机 由交换机把消息传给各个消费者
     */
    @Test
    public void test3(){
        rabbitTemplate.convertAndSend("fanoutExchangeName", "", "fanout message");
    }

    /**
     * direct 路由订阅消息模型 使用交换机和路由传递 要设定指定的rootingKey，确定将消息传给哪个消费者
     */
    @Test
    public void test4(){
        rabbitTemplate.convertAndSend("directExchangeName", "error","error message");
    }

    /**
     * topics 动态路由订阅消息模型 也使用交换机和路由 可以使用通配符进行匹配rootingKey
     */
    @Test
    public void test5(){
        rabbitTemplate.convertAndSend("exchangeName", "info", "info message");
    }
}







/**
 * @author sunyt31481
 * @date 2020/8/13 13:36
 * @description
 */
@SpringBootApplication
class RabbitMqApplication {
    public static void main(String[] args) {
        SpringApplication.run(RabbitMqApplication.class);
    }
}



